Global connectivity provided by the Internet will increase the demand for internationalized software products and place additional requirements on internationalized applications. For example, applications that are delivered and run over the Internet may need to adapt to the user's language at run time. Other applications will need to be multilingual and support a combination of different languages. A platform-portable programming language, JAVA, has been designed to support internationalization. The JAVA primitive character type is based on Unicode, which is an international standard for encoding written language elements.
Although JAVA includes support for Unicode strings, many text editors use double-byte character set (DBCS) encoding, and many text files contain DBCS strings rather than Unicode strings. For text files that contain DBCS strings, the source files must be converted to Unicode when compiled. In addition, DBCS strings must be converted to Unicode during read and write operations. The MICROSOFT system development tools for JAVA enhance the internationalization features of JAVA with support for DBCS encoding and MICROSOFT WINDOWS resources.
Specifically, the MICROSOFT JAVA compiler (JVC) translates DBCS literal strings in source code files to Unicode when compiling the source code into class files. When a browser with Unicode-enabled JAVA support (for example, the support in MICROSOFT INTERNET EXPLORER, version 3.0) runs these class files, the literal strings will therefore appear correctly. In addition, the MICROSOFT virtual machine allows a system developer to write JAVA-based programs that convert text strings between DBCS and Unicode.
An input method editor (IME) is a program that allows computer users to enter complex characters and symbols, such as Japanese Kanji characters, using a standard keyboard. Internationalized versions of MICROSOFT WINDOWS provide system IMEs for locales with languages using non-Latin alphabets, such as Japanese, Korean, traditional Chinese, and simplified Chinese. IMEs may also be developed for other languages, such as Russian, Arabic, Hebrew, and so forth.
At present, IME source code cannot be modified by system developers on an as-needed basis. Making IME source code alteration generally available is complicated by the fact that IMEs are implemented on many different types of platforms using different operating systems. The prospect of updating every possible operating system that might have to interact with an IME is not a practical solution.
There is, therefore, a need for a platform-portable virtual machine that allows individual developers to modify IME source code on an as-needed basis. In particular, there is a need for a system that provides IME support for JAVA applications that host JAVA-based IMEs as well as existing system IMEs.